<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        //解构赋值
        //1.数组解构；
        //ES5
        //var arr = [1,2,3];
        //var a = arr[0];
        //var b = arr[1];
        //var c = arr[2];
        //console.log(a,b,c);


        //ES6
        //单层解构
        //let arr = [1,2,3];
        //let [a,b,c] = arr;//a,b,c都是自定义的，是一一对应的关系；
        //console.log(a,b,c);


        //2.对象的解构
        //var obj = {
        //     name:"张三",
        //     age:20,
        //     height:"178cm"
        // }



        //ES5;
        //var name = obj.name;
        //var age = obj.age;
        //var height = obj.height;
        //console.log(name,age,height);


        //ES6;
        //键名必须和原来的数组一致，接受键值的变量可以自定义；

        //let{name:name,age:age,height:height} = obj;
        //console.log(name,age,height);

        //键值和键名名称不同；
        //let {name:myname,age:myage,height:myheight} = obj;
        //console.log(myname,myage,myheight);


        //键名和键值一样可以省略：
        //let{name,age,height} = obj;
        //console.log(name,age,height);

        //多层对象解构
        //var obj {
        //     name:"张三",
        //     age:20,
        //     hobby:{
        //         one:"篮球"
        //     }
        // }
        //let {name,age,hobby:{one}} = obj;
        //console.log(name,age,one);



        //3.参数的解构
        //对象参数
        //ES5参数；

        //function fn(arg){
        //     var name = arg.name;
        //     var age = arg.age;
        //     console.log(name.age);

        // }
        // fn({name:"张三"，age：20})

        //ES6参数解构
        //function fn({name,age}){
        //     console.log(name,age);
        // }
        // fn({name:"张三"，age：20})

        //数组参数
        function fn([a=1,b=2,c=3,d=5]){
            console.log(a,b,c,d);
        }
        fn([1,2,3,4]);

        //4.解构可以给默认值；
        //var obj = {
        //     name:"张三"，
        //     age：20，
        //     height："178cm"
        // }
        //参数的默认值，如果能够解构出来参数那么按照解构的为准；
        //如果没有解构出来值，就会获取默认值；
         // let {name="李四",age=21,height="175cm"} = obj;
        // console.log(name,age,height);
    </script>
</body>
</html>